home *** CD-ROM | disk | FTP | other *** search
- /*
-
- DTR control program. Called from Shell or Desktop. Rename to DTR.PRG
-
- if placed in AUTO folder.
-
- Call:
-
- DTR {"on"|"off"}
-
- Assumes "off" if no argument.
-
-
-
- Written by Bruce D. Nelson 1/18/87 Megamax C.
-
- */
-
-
-
- #include <osbind.h>
-
- #include <string.h>
-
-
-
- extern giaccess();
-
- extern rdbt();
-
- extern dtron();
-
- extern dtroff();
-
- extern setbt();
-
- extern clrbt();
-
-
-
-
-
- asm{
-
-
-
- giaccess:
-
- move.w SR,-(A7) /* save status */
-
- ori.w #0x700,SR /* IPL 7, disable ints */
-
- movem.l D1-D2/A0,-(A7) /* Save regs */
-
- lea 0xFFFF8800,A0 /* Adr of Sound Chip */
-
- move.b D1,D2 /* Get reg # */
-
- and.b #15,D1 /* reg 0-15 */
-
- move.b D1,(A0) /* select reg */
-
- asl.b #1,D2 /* test read/write bit */
-
- bcc rdbt(PC) /* go read */
-
- move.b D0,2(A0) /* write data to sound chip register */
-
- rdbt: moveq #0,D0
-
- move.b (A0),D0 /* read byte from sound chip register */
-
- movem.l (A7)+,D1-D2/A0 /* restore registers */
-
- move.w (A7)+,SR /* restore status */
-
- rts
-
-
-
- dtroff:
-
- moveq #16,D2 /* set dtr bit */
-
- bra setbt(PC) /* go set bit */
-
-
-
- dtron:
-
- moveq #-17,D2 /* clear dtr bit */
-
- bra clrbt(PC) /* go clear bit */
-
-
-
- setbt:
-
- movem.l D0-D2,-(A7) /* Save registers */
-
- move.w SR,-(A7) /* Save status */
-
- ori.w #0x700,SR /* IPL 7, disable ints */
-
- moveq #14,D1 /* port A */
-
- move.l D2,-(A7) /* save bit # */
-
- bsr giaccess(PC) /* Select port A */
-
- move.l (A7)+,D2 /* bit # back */
-
- or.b D2,D0 /* Set bits */
-
- moveq #0x8E,D1 /* Write to port A */
-
- bsr giaccess(PC) /* write new value */
-
- move.w (A7)+,SR /* Restore status */
-
- movem.l (A7)+,D0-D2 /* restore regs */
-
- rts
-
-
-
- clrbt:
-
- movem.l D0-D2,-(A7) /* Save registers */
-
- move.w SR,-(A7) /* Save status */
-
- ori.w #0x700,SR /* IPL 7, disable ints */
-
- moveq #14,D1 /* port A */
-
- move.l D2,-(A7) /* save bit # */
-
- bsr giaccess(PC) /* Select port A */
-
- move.l (A7)+,D2 /* bit # back */
-
- and.b D2,D0 /* Set bits */
-
- moveq #0x8E,D1 /* Write to port A */
-
- bsr giaccess(PC) /* write new value */
-
- move.w (A7)+,SR /* Restore status */
-
- movem.l (A7)+,D0-D2 /* restore regs */
-
- rts
-
- }
-
-
-
- /* main - Determine if argument is "on" or "off". Assume "off" if no arg.
-
- Process DTR accordingly. */
-
-
-
-
-
- main(argc,argv)
-
- int argc;
-
- char *argv[];
-
- {
-
- if(argc > 1 && strcmp(argv[1],"on")==0){
-
- Supexec(&dtron);
-
- printf ("DTR has been turned on\n");
-
- }
-
- else{
-
- Supexec(&dtroff);
-
- printf ("DTR has been turned off\n");
-
- }
-
-
-
- }
-
-
-
-
-
-